package Test;

import java.util.Scanner;

public class ZhuanHuanLuoMaShuZi {

    //方法一：字符串的条件判断(包含长度，数字内容)
    //1.要干什么            判断字符串是否符合标准
    //2.需要什么            接收字符串
    //3。是否需要返回值       返回boolean值进行后续判断
    public static boolean rightString(String str) {
        //str的要求判断
        //长度判断
        if (str.length() > 9){
            //System.out.println("输入的字符串长度超过9，请重新输入：");
            return false;
        }
        //是否包含数字
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c > '9' || c < '0'){
                return false;
            }
        }
        return true;
    }


    //方法二：将字符串的数字改为罗马数字
    //1.要干什么            将字符串的数字改为罗马数字，实现
    //2.需要什么            接收字符串str
    //3。是否需要返回值       不需要
    public static String printChangString(String str) {
        //1.定义一个罗马数字数组
        String[] arr1 = {" ","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
        StringBuilder result = new StringBuilder();//用于拼接字符
        //2.转换
        //参考查表法：JinEZhuanHuan---金额转换
        //查表法：表对应由文字形式的数字构成的数组
        //通过数组的索引去与输入的数字建立联系
        //首先将接收的字符型数字进行整型转换
        //1.遍历
        //作为arr1的索引
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            int num = c - '0';//用num接收对应整型数字，作为arr1的索引
            result.append(arr1[num]);
//            //num为0的判断
//            if (num == 0) {
//                result.append(" ");
//            }else {
//                result.append(arr1[num - 1]);
//            }

        }
        return result.toString();//返回字符串
    }


    //——————————————————————————————————————————————————————————————
    public static void main(String[] args) {
        //键盘录入一个字符串
        //要求：
        //1.长度小于等于9
        //2.只能是数字
        //将内容变成罗马数字
        //对比关系：1-Ⅰ、2-Ⅱ、3-Ⅲ、4-Ⅳ、5-Ⅴ、6-Ⅵ、7-Ⅶ、8-Ⅷ、9-Ⅸ
        //注意：罗马数字里面没有0，如果键盘录入的数字包含0，可变成" "(长度为0的字符串)

        //键盘录入一个字符串
        Scanner sc = new Scanner(System.in);
        String str = "";
        while (true) {
            System.out.println("请输入一个字符串：");
            str = sc.next();

            if (rightString(str)){
                System.out.println("有效String：" + str);
                break;
            }else {
                System.out.println("无效String，请重新输入：");
            }
        }

        //输出结果
        System.out.println("结果为：" + printChangString(str));
    }
}
